//登录此页面的学生id
var stuId;

// 富文本编辑器实例
var addNoteEditor, updateNoteEditor;
var currentNoteId; // 当前编辑的笔记ID


// 检查是否已登录
function isLoggedIn() {
    return sessionStorage.getItem('isLogin') === 'true'&& JSON.parse(sessionStorage.getItem('userInfo') || '{}').type === 0;
}

// 获取当前登录用户信息
function getUserInfo() {
    const userInfo = sessionStorage.getItem('userInfo');
    return userInfo ? JSON.parse(userInfo) : null;
}

// 检查是否为学生登录
function isStudentLoggedIn() {
    const userInfo = getUserInfo();
    return isLoggedIn() && userInfo && userInfo.type === 0;
}

if (!isLoggedIn()) {
    // 未登录，跳转到登录页
    location.href = "/LLMTchStd/userlogin";
} else {
    const userInfo = getUserInfo();
    stuId = userInfo.id;
    $('.username').text(userInfo.name || '学生');
}

var isSearch = 0;
var serPage = 1;

var notePage = 1;
var pageSize = 5;

var noteData;

// 初始化富文本编辑器
function initQuillEditors() {
    // 添加笔记编辑器
    addNoteEditor = new Quill('#add-note-editor', {
        theme: 'snow',
        modules: {
            toolbar: [
                ['bold', 'italic', 'underline', 'strike'],
                ['blockquote', 'code-block'],
                [{ 'header': 1 }, { 'header': 2 }],
                [{ 'list': 'ordered'}, { 'list': 'bullet' }],
                [{ 'script': 'sub'}, { 'script': 'super' }],
                [{ 'indent': '-1'}, { 'indent': '+1' }],
                [{ 'direction': 'rtl' }],
                [{ 'size': ['small', false, 'large', 'huge'] }],
                [{ 'header': [1, 2, 3, 4, 5, 6, false] }],
                [{ 'color': [] }, { 'background': [] }],
                [{ 'font': [] }],
                [{ 'align': [] }],
                ['clean'],
                ['link', 'image', 'video']
            ]
        },
        placeholder: '请输入笔记内容...'
    });

    // 修改笔记编辑器
    updateNoteEditor = new Quill('#update-note-editor', {
        theme: 'snow',
        modules: {
            toolbar: [
                ['bold', 'italic', 'underline', 'strike'],
                ['blockquote', 'code-block'],
                [{ 'header': 1 }, { 'header': 2 }],
                [{ 'list': 'ordered'}, { 'list': 'bullet' }],
                [{ 'script': 'sub'}, { 'script': 'super' }],
                [{ 'indent': '-1'}, { 'indent': '+1' }],
                [{ 'direction': 'rtl' }],
                [{ 'size': ['small', false, 'large', 'huge'] }],
                [{ 'header': [1, 2, 3, 4, 5, 6, false] }],
                [{ 'color': [] }, { 'background': [] }],
                [{ 'font': [] }],
                [{ 'align': [] }],
                ['clean'],
                ['link', 'image', 'video']
            ]
        },
        placeholder: '请输入笔记内容...'
    });
}

// 在页面加载完成后初始化编辑器
$(document).ready(function() {
    initQuillEditors();
    noPage();
    var offset = (notePage - 1) * pageSize;
    noteData = {
        "id": stuId,
        "offset": offset,
        "pageSize": pageSize
    };
    noData();
});

function noPage() {
    if (isSearch == 0) {
        $.ajax({
            url: '/note/count',
            type: 'post',
            contentType: 'application/json',
            data: JSON.stringify(stuId),
            success: function(data) {
                if (data.code == "0000") {
                    var value = data.data;
                    $(".notePageBox").empty();
                    $(".notePageBox").append("<button class='btn page prevPage' title='上一页'><i class='fas fa-chevron-left'></i></button>");
                    for (var i = 0; i < Math.ceil(value / pageSize); i++) {
                        if (i == notePage - 1) {
                            $(".notePageBox").append("<button class='btn page page1 active'>" + (i + 1) + "</button>");
                        } else {
                            $(".notePageBox").append("<button class='btn page page1'>" + (i + 1) + "</button>");
                        }
                    }
                    $(".notePageBox").append("<button class='btn page nextPage' title='下一页'><i class='fas fa-chevron-right'></i></button>");
                } else {
                    alert(data.msg);
                }
            },
            error: function() {
                alert("出错了");
            }
        });
    } else {
        $.ajax({
            url: '/note/serCount',
            type: 'POST',
            contentType: 'application/json',
            data: JSON.stringify(noteData),
            success: function(data) {
                if (data.code == "0000") {
                    var value = data.data;
                    $(".notePageBox").empty();
                    $(".notePageBox").append("<button class='btn page prevPage' title='上一页'><i class='fas fa-chevron-left'></i></button>");
                    for (var i = 0; i < Math.ceil(value / pageSize); i++) {
                        if (i == serPage - 1) {
                            $(".notePageBox").append("<button class='btn page page1 active'>" + (i + 1) + "</button>");
                        } else {
                            $(".notePageBox").append("<button class='btn page page1'>" + (i + 1) + "</button>");
                        }
                    }
                    $(".notePageBox").append("<button class='btn page nextPage' title='下一页'><i class='fas fa-chevron-right'></i></button>");
                } else {
                    alert(data.msg);
                }
            },
            error: function() {
                alert("出错了");
            }
        });
    }
}

function noData() {
    if (isSearch == 0) {
        offset = (notePage - 1) * pageSize;
        noteData.offset = offset;
        $.ajax({
            url: '/note/page',
            type: "post",
            contentType: 'application/json',
            data: JSON.stringify(noteData),
            success: function(value) {
                if (value.code == "0000") {
                    var arr = value.data;
                    $(".noteContentBox tbody").empty();
                    for (var i = 0; i < arr.length; i++) {
                        $(".noteContentBox tbody").append("<tr>" +
                            "<td>" + arr[i].name + "</td>" +
                            "<td class='action-buttons'><button class='btn icon edit editNote' title='编辑' index='" + arr[i].id + "'><i class='fas fa-edit'></i></button>" +
                            "<button class='btn icon delete deleteNote' title='删除' index='" + arr[i].id + "'><i class='fas fa-trash'></i></button>" +
                            "<button class='btn icon generate generateExamFromNote' title='生成试卷' index='" + arr[i].id + "'><i class='fas fa-file-alt'></i></button></td>"+
                            "</tr>"
                        );
                    }
                }
            },
            error: function() {
                alert("出错了");
            }
        });
    } else {
        offset = (serPage - 1) * pageSize;
        noteData.offset = offset;
        $.ajax({
            url: '/note/search',
            type: "post",
            contentType: 'application/json',
            data: JSON.stringify(noteData),
            success: function(value) {
                if (value.code == "0000") {
                    var arr = value.data;
                    $(".noteContentBox tbody").empty();
                    for (var i = 0; i < arr.length; i++) {
                        $(".noteContentBox tbody").append("<tr>" +
                            "<td>" + arr[i].name + "</td>" +
                            "<td class='action-buttons'><button class='btn icon edit editNote' title='编辑' index='" + arr[i].id + "'><i class='fas fa-edit'></i></button>" +
                            "<button class='btn icon delete deleteNote' title='删除' index='" + arr[i].id + "'><i class='fas fa-trash'></i></button>" +
                            "<button class='btn icon generate generateExamFromNote' title='生成试卷' index='" + arr[i].id + "'><i class='fas fa-file-alt'></i></button></td>"+
                            "</tr>"
                        );
                    }
                }
                else if(value.code == "4003"){
                    $(".noteContentBox tbody").empty();
                    alert(value.msg)
                }
                else{
                    alert(value.msg)
                }
            },
            error: function() {
                alert("出错了");
            }
        });
    }
}


// Generate Exam from Note button click event
$(".noteContentBox").on("click", ".generateExamFromNote", function() {
    $('#generate-exam-from-note-modal').addClass('show');
    var noteId = $(this).attr('index');
    $('#confirm-generate-exam-from-note').attr('note-id', noteId);
});

// Close generate exam from note modal
$('#generate-exam-from-note-modal .close-modal, #cancel-generate-exam-from-note-btn').click(function() {
    $('#generate-exam-from-note-modal').removeClass('show');
});

// Confirm generate exam from note
$('#confirm-generate-exam-from-note').click(function() {
    var generateData;
    var userInfo = getUserInfo();
    var creatorId = userInfo.id;
    var $this = $(this);
    var noteId = $this.attr('note-id');

    // 获取题型数量
    var choiceCount = parseInt($("#note-choice-count").val(), 10) || 0;
    var fillCount = parseInt($("#note-fill-count").val(), 10) || 0;
    var judgeCount = parseInt($("#note-judge-count").val(), 10) || 0;
    var essayCount = parseInt($("#note-essay-count").val(), 10) || 0;
    var calculateCount = parseInt($("#note-calculate-count").val(), 10) || 0;
    var examRemark = $("#note-exam-remark").val() || "";

    // 获取考试时间相关字段
    var releaseTime = $("#note-release-time").val();
    var examDuration = parseInt($("#note-exam-duration").val(), 10) || 0;

    // 验证输入
    if (!releaseTime) {
        alert("请选择考试开始时间");
        return;
    }

    if (examDuration <= 0) {
        alert("考试时长必须大于0分钟");
        return;
    }

    // 验证考试开始时间是否在当前时间之后
    var now = new Date();
    var startTime = new Date(releaseTime);
    if (startTime <= now) {
        alert("考试开始时间必须晚于当前时间");
        return;
    }

    if (choiceCount < 0 || fillCount < 0 || judgeCount < 0 || essayCount < 0 || calculateCount < 0) {
        alert("题型数量不能为负数");
        return;
    }

    if (choiceCount + fillCount + judgeCount + essayCount + calculateCount === 0) {
        alert("请至少设置一种题型的数量");
        return;
    }

    // 构造完整的生成数据对象
    generateData = {
        creatorId: creatorId,
        creatorType: 0, // 0 for student
        createBy: noteId, // note ID
        choiceCount: choiceCount,
        fillCount: fillCount,
        judgeCount: judgeCount,
        essayCount: essayCount,
        calculateCount: calculateCount,
        remark: examRemark,
        way: 0, // 0 for insert, 1 for update
        releaseTime: releaseTime, // 考试开始时间
        examDuration: examDuration // 考试时长（分钟）
    };

    // 显示加载状态
    var originalBtnContent = $this.html();
    $this.html('<i class="fas fa-spinner fa-spin"></i> 正在生成...').attr('disabled', true);
    // 调用API生成试卷
    $.ajax({
        url: "/deepseek/generate-exam-from-note",
        type: "POST",
        contentType: 'application/json',
        data: JSON.stringify({ generateData: generateData }),
        success: function(response) {
            $this.html(originalBtnContent).attr('disabled', false);

            if (response.code === "0000") {
                alert("试卷生成成功！");
                $('#generate-exam-from-note-modal').removeClass('show');
            } else {
                alert("生成失败: " + response.msg);
            }
        },
        error: function(xhr) {
            $this.html(originalBtnContent).attr('disabled', false);
            alert("请求失败: " + xhr.statusText);
        }
    });
});

// 添加笔记按钮点击事件
$(".addNote").click(function() {
    // 清空表单
    $('#add-note-form')[0].reset();
    addNoteEditor.root.innerHTML = '';

    // 显示弹窗
    $('#add-note-modal').addClass('show');
});

// 关闭添加笔记弹窗
$('#close-add-note-modal, #cancel-add-note-btn').click(function() {
    $('#add-note-modal').removeClass('show');
});

// 提交添加笔记表单
$("#add-note-form").on("submit", function(e) {
    e.preventDefault();

    var name = $('#add-note-name').val().trim();
    var content = addNoteEditor.root.innerHTML;

    if (!name) {
        alert('请输入笔记名称');
        return;
    }

    if (!content) {
        alert('请输入笔记内容');
        return;
    }

    var noteData = {
        "name": name,
        "content": content,
        "studentId": stuId
    };

    $.ajax({
        url: "/note/insert",
        type: "POST",
        contentType: 'application/json',
        data: JSON.stringify(noteData),
        success: function(value) {
            alert(value.msg);
            if (value.code == "0000") {
                $('#add-note-modal').removeClass('show');
                // 刷新笔记列表
                noPage();
                noData();
            }
        },
        error: function() {
            alert("添加笔记失败");
        }
    });
});

// 编辑笔记按钮点击事件
$(".noteContentBox").on("click", ".editNote", function() {
    currentNoteId = $(this).attr("index");

    // 清空表单
    $('#update-note-form')[0].reset();
    updateNoteEditor.root.innerHTML = '';

    // 获取笔记详情
    $.ajax({
        url: "/note/edit",
        type: "POST",
        contentType: 'application/json',
        data: JSON.stringify(currentNoteId),
        success: function(value) {
            if (value.code == "0000") {
                var note = value.data;
                $('#update-note-id').val(note.id);
                $('#update-note-name').val(note.name);
                updateNoteEditor.root.innerHTML = note.content;

                // 显示弹窗
                $('#update-note-modal').addClass('show');
            } else {
                alert(value.msg);
            }
        },
        error: function() {
            alert("获取笔记详情失败");
        }
    });
});

// 关闭修改笔记弹窗
$('#close-update-note-modal, #cancel-update-note-btn').click(function() {
    $('#update-note-modal').removeClass('show');
});

// 提交修改笔记表单
$("#update-note-form").on("submit", function(e) {
    e.preventDefault();

    var name = $('#update-note-name').val().trim();
    var content = updateNoteEditor.root.innerHTML;

    if (!name) {
        alert('请输入笔记名称');
        return;
    }

    if (!content) {
        alert('请输入笔记内容');
        return;
    }

    var noteData = {
        "id": currentNoteId,
        "name": name,
        "content": content,
        "studentId": stuId
    };

    $.ajax({
        url: "/note/update",
        type: "POST",
        contentType: 'application/json',
        data: JSON.stringify(noteData),
        success: function(value) {
            alert(value.msg);
            if (value.code == "0000") {
                $('#update-note-modal').removeClass('show');
                // 刷新笔记列表
                noPage();
                noData();
            }
        },
        error: function() {
            alert("更新笔记失败");
        }
    });
});

//删除笔记
$(".noteContentBox").on("click", ".deleteNote", function() {
    if (confirm("确定要删除吗？")) {
        var id = $(this).attr("index");
        $.ajax({
            url: "/note/delete",
            type: "post",
            contentType: 'application/json',
            data: JSON.stringify(id),
            success: function(value) {
                alert(value.msg);
                if (value.code == "0000") {
                    //重查一遍数据 模拟刷新
                    noPage();
                    noData();
                }
            },
            error: function() {
                alert("出错了");
            }
        });
    } else {
        alert("已取消删除");
    }
});

//笔记搜索
$("#note-box .search-boxes #search-note-btn").click(function() {
    //搜索状态设置为1
    isSearch = 1;
    //读取 搜索框的输入
    var name = $('#note-box #search-note-name').val().trim();
    if(name==""){
        alert("请输入笔记名称")
        return
    }
    var offset = (serPage - 1) * pageSize;
    noteData = {
        "id": stuId,
        "name": name,
        "offset": offset,
        "pageSize": pageSize
    };

    noPage();
    noData();
});

$(".noteRa").click(function() {
    var index = $(this).attr("index");

    // 选中当前菜单项
    $(".sidebar-nav li").removeClass("active");
    $(this).addClass("active");

    // 隐藏所有内容盒子
    $(".content-box").hide();
    // 显示对应索引的内容盒子
    $("." + index).show();

    //清除搜索框的内容
    $('#note-box #search-note-name').val('');

    //搜索状态设置为0
    isSearch = 0;
    serPage = 1;

    noPage();
    noData();
});

//页码切换
//任意页码切换
$(".notePageBox").on("click", ".page1", function() {
    if (isSearch == 0) {
        if (notePage == $(this).text()) {
            alert("该页已经是第" + $(this).text() + "页");
            return;
        }
        notePage = $(this).text();
    } else {
        if (serPage == $(this).text()) {
            alert("该页已经是第" + $(this).text() + "页");
            return;
        }
        serPage = $(this).text();
    }
    noData();
    $(this).addClass("active");
    $(this).siblings().removeClass("active");
});

//上一页切换
$(".notePageBox").on("click", ".prevPage", function() {
    if (isSearch == 0) {
        if (notePage == 1) {
            alert("已经是第一页");
            return;
        }
        notePage--;
    } else {
        if (serPage == 1) {
            alert("已经是第一页");
            return;
        }
        serPage--;
    }
    noData();
    $(".notePageBox .page1").removeClass("active");
    //索引从0开始，page从1开始
    if (isSearch == 0) {
        $(".notePageBox .page1").eq(notePage - 1).addClass("active");
    } else {
        $(".notePageBox .page1").eq(serPage - 1).addClass("active");
    }
});

//下一页切换
$(".notePageBox").on("click", ".nextPage", function() {
    if (isSearch == 0) {
        if (notePage == $(".notePageBox .page1").length) {
            alert("已经是最后一页");
            return;
        }
        notePage++;
    } else {
        if (serPage == $(".notePageBox .page1").length) {
            alert("已经是最后一页");
            return;
        }
        serPage++;
    }
    noData();
    $(".notePageBox .page1").removeClass("active");
    if (isSearch == 0) {
        $(".notePageBox .page1").eq(notePage - 1).addClass("active");
    } else {
        $(".notePageBox .page1").eq(serPage - 1).addClass("active");
    }
});

// 考试导航点击事件
$(".examRa").click(function() {
    var index = $(this).attr("index");

    // 选中当前菜单项
    $(".sidebar-nav li").removeClass("active");
    $(this).addClass("active");

    // 隐藏所有内容盒子
    $(".content-box").hide();
    // 显示考试内容盒子
    $("." + index).show();
});

$(".errorRa").click(function() {
    var index = $(this).attr("index");

    // 选中当前菜单项
    $(".sidebar-nav li").removeClass("active");
    $(this).addClass("active");

    // 隐藏所有内容盒子
    $(".content-box").hide();
    // 显示对应索引的内容盒子
    $("." + index).show();
});

$(".chatRa").click(function() {
    var index = $(this).attr("index");

    // 选中当前菜单项
    $(".sidebar-nav li").removeClass("active");
    $(this).addClass("active");

    // 隐藏所有内容盒子
    $(".content-box").hide();
    // 显示对应索引的内容盒子
    $("." + index).show();
});
$(document).ready(function() {
    // 1. 从后端获取当前登录用户信息（包含用户名）
    fetchCurrentUser();

    // 2. 点击用户名显示弹窗
    $("#username").on("click", function() {
        $("#userModal").css("display", "flex");
        // 刷新个人信息
        fetchUserDetail();
    });

    // 3. 关闭弹窗（点击关闭按钮）
    $(".close-modal").on("click", function() {
        $("#userModal").hide();
    });

    // 4. 点击弹窗外部关闭
    $(window).on("click", function(e) {
        if ($(e.target).hasClass("user-modal")) {
            $("#userModal").hide();
        }
    });

    // 5. 退出登录功能
    $("#logoutBtn").on("click", function() {
        if (confirm("确定要退出登录吗？")) {
            $.ajax({
                url: "/user/logout", // 后端退出登录接口
                type: "POST",
                success: function(response) {
                    if (response.code === "0000") {
                        // 退出成功，跳转到登录页
                        window.location.href = "/LLMTchStd/userlogin";
                    } else {
                        alert("退出失败：" + response.msg);
                    }
                },
                error: function() {
                    alert("网络错误，退出失败");
                }
            });
        }
    });
});

/**
 * 获取当前登录用户的基本信息（用于显示用户名）
 */
function fetchCurrentUser() {
    $.ajax({
        url: "/user/studentCurrent", // 后端获取当前用户信息接口
        type: "GET",
        success: function(response) {
            console.log(response)
            if (response.code === "0000" && response.data) {
                // 更新用户名显示
                $("#username").text(response.data.name || "未知用户");
            } else {
                console.error("获取用户信息失败", response.msg);
                $("#username").text("游客");
            }
        },
        error: function() {
            console.error("获取用户信息出错");
            $("#username").text("游客");
        }
    });
}

/**
 * 获取用户详细信息（用于弹窗展示）
 */
function fetchUserDetail() {
    $.ajax({
        url: "/user/studentCurrent", // 后端获取用户详细信息接口
        type: "GET",
        success: function(response) {
            console.log(response)
            if (response.code === "0000" && response.data) {
                const user = response.data;
                // 渲染个人信息
                let infoHtml = `
                    <div class="info-item"><strong>姓名：</strong>${user.name || "未设置"}</div>
                    <div class="info-item"><strong>性别：</strong>${user.sex || "未设置"}</div>
                    <div class="info-item"><strong>学号：</strong>${user.sno || "未设置"}</div>
                    <div class="info-item"><strong>手机号：</strong>${user.phone || "未设置"}</div>
                `;
                $("#userInfo").html(infoHtml);
            } else {
                $("#userInfo").html(`<div class="loading">获取信息失败：${response.msg || "未知错误"}</div>`);
            }
        },
        error: function() {
            $("#userInfo").html(`<div class="loading">网络错误，无法获取信息</div>`);
        }
    });
}